Questions
17 of 17
1Design a semantic search system that must support 500 million documents with sub-100ms p99 latency. What are the key architectural decisions?
2How would you plan capacity (RAM, disk, CPU, node count) for a collection of a given size, vector dimensionality, and expected QPS?
3What architectural changes would you make to support near-real-time search over data that changes thousands of times per second (e.g., a live feed)?
4How would you design a system that needs to support both 'search the last 24 hours' and 'search all history' with very different latency expectations?
5What role does caching play in a Qdrant-backed search system, and at what layers would you introduce it?
6How would you decide the initial number of shards for a new collection when the eventual data size is uncertain?
7What is the relationship between shard count and query fan-out cost, and why doesn't 'more shards' always mean 'faster'?
8How many replicas would you configure for a shard serving a mission-critical, read-heavy workload, and what does each additional replica cost you?
9What operational steps are involved in adding a new node to an existing Qdrant cluster and rebalancing shards onto it?
10How does Qdrant's architecture and target use case differ from Pinecone's as a fully managed, closed-source vector database?
11When would you choose pgvector inside an existing Postgres database over a dedicated vector database like Qdrant?
12What distinguishes Qdrant from Weaviate and Milvus at a conceptual level, and what would make you choose one over the others for a given project?
13Under what circumstances would a team be justified in NOT using a vector database at all, and instead using brute-force search or a traditional search engine?
14What is your target Recovery Point Objective (RPO) and Recovery Time Objective (RTO) for a Qdrant deployment, and how do snapshot frequency and replication factor influence each?
15How would you design a disaster-recovery strategy that survives the loss of an entire cloud region?
16What is the operational difference between a rolling upgrade of a replicated cluster and an in-place upgrade of a single-node deployment?
17How would you validate that a newly restored cluster from snapshots is actually healthy and serving correct results before routing production traffic to it?
17 / 17

How would you validate that a newly restored cluster from snapshots is actually healthy and serving correct results before routing production traffic to it?

Point counts, index status, sample queries, and end-to-end checks

The validation has four layers: structural, index, functional, and end-to-end. Structural validation checks that the collection exists with the right configuration and that the point count matches the expected count from before the failure. Index validation checks that the HNSW graphs and payload indexes are built and that no segments are stuck in an unindexed state. Functional validation runs a set of known queries and asserts that the results match the expected IDs from a reference set - this is the strongest check because it verifies that the data is not just present but searchable and correctly indexed. End-to-end validation runs the actual application against the restored cluster in a shadow or canary mode, comparing the results with the expected behavior before cutting over. The validation should also check the payload schemas, the aliases, the replication factor, the shard placement, and the consistency settings, because a restore can miss metadata that is not part of the snapshot.

The mechanism that makes each layer effective is that it catches a different class of problem. A structural check catches a collection that was not restored or was restored with the wrong config. An index check catches a collection whose data is present but not indexed, which would cause queries to fall back to a brute-force scan and be slow. A functional check catches a collection whose index is built but whose data is wrong. An end-to-end check catches integration issues - the application connecting to the wrong collection, the wrong alias, a version mismatch. The layers are complementary: skipping any one leaves a class of failure undetected. The functional check is the most important because it is the closest to the user experience, but it requires a reference set of queries and expected results. Building that reference set before the failure is part of the preparation: you cannot validate after the fact without a known-good baseline.

  1. 1

    Structural: collection exists, config matches, point count matches the expected count.

  2. 2

    Index: HNSW graphs and payload indexes are built; indexed_vectors_count is close to points_count.

  3. 3

    Functional: known queries return expected IDs, verifying both data and index.

  4. 4

    End-to-end: the application queries the restored cluster in shadow mode and results match.

  5. 5

    Metadata: aliases, payload schemas, replication factor, shard placement.

  6. 6

    Reference set: a set of queries and expected results captured before the failure.

  7. 7

    Consistency: the restored cluster is consistent with the last snapshot, not with the pre-failure state.

  8. 8

    Cutover: route traffic only after all validation layers pass.

The trade-off is between thorough validation and the time it takes. A full validation with end-to-end checks takes longer but is safer. A quick structural check is fast but can miss index or data issues. The right balance depends on the criticality of the system and the cost of a bad cutover. The common mistakes are: (1) checking only the point count and not the index status; (2) not having a reference set of queries, so the functional check is impossible; (3) not checking the metadata (aliases, schemas) that is not part of the snapshot; (4) cutting over before the end-to-end check passes, so integration issues are discovered in production; (5) not documenting the validation procedure, so it is improvised under pressure. Version note: the collection info fields and the snapshot restore procedure have changed across Qdrant releases. The exact validation checks depend on the version. Test the restore procedure and the validation on your version before a real incident.

javascript

Version-dependent: the collection info fields and the snapshot restore procedure have changed across Qdrant releases. The exact validation checks depend on the version. Test the restore procedure and the validation on your version before a real incident.

Difficulty: 7/10
Topics: Disaster Recovery, Validation, Snapshots

Scenario Questions

0-2 years experience
  1. 1

    You restore a cluster from a snapshot and the point count looks right. Explain why that is not enough to declare it healthy.

  2. 2

    A teammate cuts over immediately after the restore. Explain the risk and the validation you would do instead.

2-5 years experience
  1. 1

    You restore a cluster and the functional validation fails on a subset of queries. Diagnose the likely causes and describe the investigation.

  2. 2

    You need to validate a restored cluster in under an hour. Describe the prioritized checks and the automation.

5-8 years experience
  1. 1

    Design a post-restore validation checklist and automation for a mission-critical Qdrant deployment, including the reference set, the checks, and the cutover criteria.

  2. 2

    You restore a multi-region cluster and need to validate it before failing over. Describe the process and the checks.

8+ years experience
  1. 1

    You are designing a DR validation framework that runs automatically after every restore. Describe the checks, the metrics, and the pass/fail criteria.

  2. 2

    Derive the trade-off between validation thoroughness and recovery time, and explain how you would choose the validation depth for a given RTO.

Follow-up Questions

  • How would you build and maintain the reference set of queries and expected results for the functional validation?
  • If the functional validation fails but the structural and index checks pass, what does that tell you and how would you investigate?